package com.neo.rabbit.hello;

import com.neo.rabbit.RabbitConfig;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class HelloDeadReceiver {

    @RabbitListener(queues = RabbitConfig.hello_dead_queue)
    public void process(String hello, Channel channel, Message message) {
        System.out.println("deadquene 处理");
        nack(channel,message,false);
        //todo 逻辑处理
    }
    /**
     * ACK统一封装
     * @param is 是否重入队列
     * @Author sfh
     * @Date 2019/10/12 14:17
     */
    private void nack(Channel channel, Message message,boolean is) {
        try {
            //param
            // 1.该消息的index,
            // 2.是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
            // 3.被拒绝的是否重新入队列
            channel.basicNack(message.getMessageProperties().getDeliveryTag(), false,is);
        } catch (IOException e) {
            System.out.println("ACK异常");
        }
    }



    /**
     * ACK统一封装
     * 是否重入队列
     * @Author sfh
     * @Date 2019/10/12 14:17
     */
    private void ack(Channel channel, Message message) {
        try {
            //param
            // 1.该消息的index,
            // 2.是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
            // 3.被拒绝的是否重新入队列
            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
        } catch (IOException e) {
            System.out.println("ACK异常");
        }
    }



}
